package cn.iocoder.yudao.module.scrm.service.customer.customerrepository;


import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.scrm.controller.admin.customer.vo.customerrepository.CustomerRepositoryRulePageReqVO;
import cn.iocoder.yudao.module.scrm.controller.admin.customer.vo.customerrepository.CustomerRepositoryRuleSaveReqVO;
import cn.iocoder.yudao.module.scrm.dal.dataobject.customer.customerrepository.CustomerRepositoryRuleDO;
import com.fasterxml.jackson.core.JsonProcessingException;

import javax.validation.Valid;

/**
 * 客户库规则 Service 接口
 *
 * @author admin
 */
public interface CustomerRepositoryRuleService {

    /**
     * 创建客户库规则
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Integer createCustomerRepositoryRule(@Valid CustomerRepositoryRuleSaveReqVO createReqVO) throws JsonProcessingException;

    /**
     * 更新客户库规则
     *
     * @param updateReqVO 更新信息
     */
    void updateCustomerRepositoryRule(@Valid CustomerRepositoryRuleSaveReqVO updateReqVO);

    /**
     * 删除客户库规则
     *
     * @param id 编号
     */
    void deleteCustomerRepositoryRule(Integer id);

    /**
     * 获得客户库规则
     *
     * @param id 编号
     * @return 客户库规则
     */
    CustomerRepositoryRuleDO getCustomerRepositoryRule(Integer id);

    /**
     * 获得客户库规则分页
     *
     * @param pageReqVO 分页查询
     * @return 客户库规则分页
     */
    PageResult<CustomerRepositoryRuleDO> getCustomerRepositoryRulePage(CustomerRepositoryRulePageReqVO pageReqVO);

}